//
// Created by xiaoma on 2/3/21.
//

#ifndef HORSE_VM_KLASS_H
#define HORSE_VM_KLASS_H

class HiObject;
class HiInteger;
class HiString;
class HiBool;

class Klass {
public:
    Klass() {}

    void setName(HiString *str) { name = str; }

    const HiString *getName() const { return name; }

    virtual void print(HiObject *object) {}

    virtual HiObject *add(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *less(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *lessEqual(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *equal(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *notEqual(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *greater(HiObject *lhs, HiObject *rhs) {}

    virtual HiBool *greaterEqual(HiObject *lhs, HiObject *rhs) {}

private:
    HiString *name;
};

#endif //HORSE_VM_KLASS_H
